#ifndef AC_DATA_H
#define AC_DATA_H

#include <QtCore>

// 空调设备数据结构体
class CAcData
{
public:
    bool IsCommNormal();
    bool IsCommFault();

    bool IsRunning();
    bool IsStopped();

    bool IsFault();
    bool IsNoFault();

    bool IsAlarm();
    bool IsNoAlarm();

    bool IsOpening();
    bool IsClosed();

//    bool IsRunningYes();
//    bool IsRunningNo();

//    bool IsAlarmYes();
//    bool IsAlarmNo();

//    bool IsFaultYes();
//    bool IsFaultNo();

    //获取***的显示文本
    QString GetCommStateText();
//    QString GetStrategyText();
//    QString GetReserveText(int iindex);
//    QString GetStrategySetText();
//    QString GetReserveSetText(int iindex);
//    QString GetRunningText();
//    QString GetInsideFanText();
//    QString GetOutsideFanText();
//    QString GetEmergencyFanText();
//    QString GetCoolerText();
//    QString GetHeaterText();
//    QString GetDehumidifyText();
//    QString GetStateText(int iindex);
//    QString GetAlarmText();
//    QString GetFaultText();
//    QString GetWarnText(int iindex);
//    QString GetTempControlText(bool bIsRead = true);
//    QString GetOnOffText(bool bIsRead = true);
//    QString GetWorkModeText(bool bIsRead = true);

//    //设置温控方式:0柜内温度 1电芯温度
//    void SetTempControlToInside();
//    void SetTempControlToBat();

//    //设置开关机:0关机 1开机
//    void SetSwitchToOn();
//    void SetSwitchToOff();

//    //设置工作模式:0待机 1制冷 2制热 3通风 4自动
//    void SetWorkModeToWait();
//    void SetWorkModeToCool();
//    void SetWorkModeToHeat();
//    void SetWorkModeToWind();
//    void SetWorkModeToAuto();

    void InitToInvalid();
    void InitToZero();
    void InitToValue(quint16 uvalue, float fvalue);

public:
    quint16 m_uCommState;           //1 通讯状态 0--正常,1-故障
    quint16 m_uRev[99];
    float m_fRev[100];

    //转发的100个UINT16数据
    quint16 m_uRunState;            //2 运行状态:0运行,1停止
    quint16 m_uFaultState;          //3 故障状态:0正常,1故障
    quint16 m_uAlarmState;          //4 告警状态:0正常,1告警
    quint16 m_uSwitchState;         //5 开关机状态:0已开机,1已关机
    quint16 m_uInsideFanState;      //6 室内风机状态:0运行,1停止

    quint16 m_uOutsideFanState;     //7 外风机状态:0运行,1停止
    quint16 m_uCoolerState;         //8 压缩机状态:0运行,1停止
    quint16 m_uHeaterState;         //9 电加热状态:0运行,1停止
    quint16 m_uEmergencyFanState;   //10 应急风机状态:0运行,1停止
    quint16 m_uDebugState;          //11 调试开关状态:0已关闭,1已开启

    quint16 m_uWorkState;           //12 工作状态:0待机,1制冷,2制热,3新风,4送风,5除湿
    quint16 m_uDryState;            //13 除湿状态:0运行,1停止
    quint16 m_uData[88];            //14~200 UINT16数据:预留,数组数量=100-上面的转发数

    //转发的100个FLOAT数据
    float m_fInsideTemp;            //201 室内温度℃
    float m_fInsideHumi;            //203 室内湿度%
    float m_fOutsideTemp;           //205 室外温度℃
    float m_fOutsideHumi;           //207 室外湿度%
    float m_fCondenseTemp;          //209 冷凝温度℃

    float m_fEvaporateTemp;         //211 蒸发温度℃
    float m_fVentilateTemp;         //213 排气温度℃
    float m_fInsideReturnTemp;      //215 柜内回风温度℃
    float m_fInsideReturnHumi;      //217 柜内回风湿度%
    float m_fCoolStartTemp;         //219 制冷开启温度℃

    float m_fCoolStopTemp;          //221 制冷停止温度℃
    float m_fCoolDiffTemp;          //223 制冷回差温度℃
    float m_fHeatStartTemp;         //225 制热开启温度℃
    float m_fHeatStopTemp;          //227 制热停止温度℃
    float m_fHeatDiffTemp;          //229 制热回差温度℃

    float m_fDryStartHumi;          //231 除湿开启湿度%
    float m_fDryStopHumi;           //233 除湿停止湿度%
    float m_fDryDiffHumi;           //235 除湿回差湿度%
    float m_fDebugSglMaxTemp;       //237 调试下的单体最大温度℃
    float m_fDebugSglMinTemp;       //239 调试下的单体最小温度℃

    float m_fDebugSglAvgTemp;       //241 调试下的单体平均温度℃
    float m_fDebugSglMaxTempDiff;   //243 调试下的单体最大温差℃
    float m_fAcVol;                 //245 交流电压
    float m_fDcVol;                 //247 直流电压
    float m_fTargetStartTemp;       //249 目标开始/设定温度

    float m_fTargetStopTemp;        //251 目标停止温度
    float m_fTargetDiffTemp;        //253 目标回差温度
    float m_fTargetStartHumi;       //255 目标开始/设定湿度
    float m_fTargetStopHumi;        //257 目标停止湿度
    float m_fTargetDiffHumi;        //259 目标回差湿度

    float m_fCheckStartTemp;        //261 反校开始/设定温度
    float m_fCheckStopTemp;         //263 反校停止温度
    float m_fCheckDiffTemp;         //265 反校回差温度
    float m_fCheckStartHumi;        //267 反校开始/设定湿度
    float m_fCheckStopHumi;         //269 反校停止湿度

    float m_fCheckDiffHumi;         //271 反校回差湿度

    float m_fData[64];              //273~599 FLOAT数据:预留,数组数量=100-上面的转发数

    // 1	 200	200	UINT16	200	读空调的UNIT16数据0x03/0x04	无	空调数据
    // 201	 600	400	FLOAT	200	读空调的FLOAT数据 0x03/0x04	无
    // 30001 30200	200	UINT16	200	写空调的数据      0x03/0x04	0x06

    //30001~30200 设置的数据:预留,数组数量=30-上面的设置数
    //"实际值=寄存器值*0.01-100 寄存器值=(实际值+100)*100 实际值范围:-100~100"
    float m_fSetStartTemp;          //30001 下设的开启温度 UINT16 0.01 -100 ℃
    float m_fSetStartTempCopy;
    float m_fSetStopTemp;           //30002 下设的停止温度 UINT16 0.01 -100 ℃
    float m_fSetStopTempCopy;
    float m_fSetStartHumi;          //30003 下设的开启湿度 UINT16 0.01 -100
    float m_fSetStartHumiCopy;
    float m_fSetStopHumi;           //30004 下设的停止湿度 UINT16 0.01 -100
    float m_fSetStopHumiCopy;
    quint16 m_uSetSwitchState;      //30005 下设开关机:0关机,1开机
    quint16 m_uSetSwitchStateCopy;
    float m_fSetCoolStartTemp;      //30006 下设制冷开始点 UINT16 0.01 -100 ℃
    float m_fSetCoolStartTempCopy;
    float m_fSetCoolStopTemp;       //30007 下设制冷停止点  UINT16 0.01 -100 ℃
    float m_fSetCoolStopTempCopy;
    float m_fSetCoolDiffTemp;       //30008 下设制冷回差点  UINT16 0.01 -100 ℃
    float m_fSetCoolDiffTempCopy;
    float m_fSetHotStartTemp;       //30009 下设制热开始点  UINT16 0.01 -100 ℃
    float m_fSetHotStartTempCopy;
    float m_fSetHotStopTemp;        //30010 下设制热停止点  UINT16 0.01 -100 ℃
    float m_fSetHotStopTempCopy;
    float m_fSetHotDiffTemp;        //30011 下设制热回差点  UINT16 0.01 -100 ℃
    float m_fSetHotDiffTempCopy;
    float m_fSetDryStartHumi;       //30012 下设除湿开始点  UINT16 0.01 -100 ℃
    float m_fSetDryStartHumiCopy;
    float m_fSetDryStopHumi;        //20013 下设除湿停止点  UINT16 0.01 -100 ℃
    float m_fSetDryStopHumiCopy;
    float m_fSetDryDiffHumi;        //30014 下设除湿回差点  UINT16 0.01 -100 ℃
    float m_fSetDryDiffHumiCopy;
    float m_fSetCtrlTempMax;        //30016 下设最高控制温度，单位为℃
    float m_fSetCtrlTempMaxCopy;
    float m_fSetCtrlTempMin;        //30017 下设最低控制温度，单位为℃
    float m_fSetCtrlTempMinCopy;
    float m_fSetCtrlTempAvg;        //30018 下设平均控制温度，单位为℃
    float m_fSetCtrlTempAvgCopy;
    quint16 m_uSetStartCoolCmd;     //30019 启动制冷命令 0关闭,1启动
    quint16 m_uSetStartCoolCmdCopy;
    quint16 m_uSetStartWindCmd;     //30020 启动送风命令 0关闭,1启动
    quint16 m_uSetStartWindCmdCopy;
    quint16 m_uSetStartWaitCmd;     //30021 启动待机命令 0关闭,1启动
    quint16 m_uSetStartWaitCmdCopy;
    quint16 m_uSetStartHotCmd;      //30022 启动加热命令 0关闭,1启动
    quint16 m_uSetStartHotCmdCopy;
    float m_fSetCtrlHumi;           //30023 下设控制湿度，单位为%
    float m_fSetCtrlHumiCopy;
    quint16 m_uSetStartDryCmd;      //30024 启动除湿命令 0关闭,1启动
    quint16 m_uSetStartDryCmdCopy;
    quint16 m_uSetData[6];
    quint16 m_uSetDataCopy[6];
};

#endif //AC_DATA_H
